// 博客文字 最大数量限制
const MAX_WORDS_NUM = 140
// 上传图片 最多张数限制
const MAX_IMAGE_NUM = 9
const db = wx.cloud.database() // 初始化数据库
let content = ""
let user = ""
Page({

  /**
   * 页面的初始数据
   */
  data: {
    wordsNum: 0,
    footerBottom: 0,
    images: [],
    isPhotoShow: true, // 选择图片是否显示
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    console.log(options)
    user = options
  },
  onInput(e) {
    let wordsNum = e.detail.value.length
    if (wordsNum >= MAX_WORDS_NUM) {
      wordsNum = `最大字数为${MAX_WORDS_NUM}`
    }
    this.setData({
      wordsNum
    })
    content = e.detail.value
  },
  onFocus(e) {
    this.setData({
      footerBottom: e.detail.height,
    })
  },
  onBlur() {
    this.setData({
      footerBottom: 0,
    })
  },
  uploadImage() {
    // 当前还可选择的最大图片数量
    let max = MAX_IMAGE_NUM - this.data.images.length
    wx.chooseImage({
      count: max,
      success: (res) => {
        this.setData({
          images: this.data.images.concat(res.tempFilePaths)
        })
        max = MAX_IMAGE_NUM - this.data.images.length
        this.setData({
          isPhotoShow: max <= 0 ? false : true
        })
      },
    })
  },
  onDelImage(e) {
    let index = e.target.dataset.index
    this.data.images.splice(index, 1)
    this.setData({
      images: this.data.images
    })
    if (this.data.images.length < MAX_IMAGE_NUM) {
      this.setData({
        isPhotoShow: true
      })
    }
  },
  onPreviewImage(e) {
    let src = e.target.dataset.imagesrc
    wx.previewImage({
      urls: this.data.images,
      current: src,
    })
  },
  send() {
    // 数据 -> 数据库
    // 图片 -> 云存储
    // 数据：内容、图片、openid、昵称、头像、发布时间
    if (content.trim() === '') {
      wx.showModal({
        title: '提示',
        content: '请输入发布内容',
        showCancel: false,
        confirmColor: '#cc0000'
      })
      return
    }
    let promiseArr = []
    let fileIds = []
    wx.showLoading({
      title: '发布中',
      mask: true,
    })
    for (let i = 0; i < this.data.images.length; i++) {
      let p = new Promise((resolve, reject) => {
        let item = this.data.images[i]
        // 文件扩展名
        let suffix = /\.\w+$/.exec(item)[0]
        wx.cloud.uploadFile({
          cloudPath: 'blog/' + Date.now() + '-' + Math.floor(Math.random() * 1000000) + suffix,
          filePath: item,
          success: (res) => {
            console.log(res)
            fileIds = fileIds.concat(res.fileID)
            resolve()
          },
          fail: (err) => {
            console.error(err)
            reject()
          }
        })
      })
      promiseArr.push(p)
    }
    Promise.all(promiseArr).then((res) => {
      db.collection('blog').add({
        data: {
          ...user,
          content,
          img: fileIds,
          creatTime: db.serverDate()
        }
      }).then((res) => {
        wx.hideLoading()
        wx.showToast({
          title: '发布成功',
        })

        // 发布成功 返回到blog列表页面
        wx.navigateBack()
        // 返回后要刷新blog列表
        let pages = getCurrentPages() // 获取页面栈
        let prevPage = pages[pages.length - 2] // 获取上一级页面
        prevPage.onPullDownRefresh()
      })
    }).catch((err) => {
      wx.hideLoading()
      wx.showModal({
        title: '提示',
        content: '发布失败',
        showCancel: false,
        confirmColor: '#cc0000'
      })
    })
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {

  }
})